import request from '@/utils/request/req';

/**
 * SOP群发任务查询参数接口
 * @interface SopMessageTaskQueryParams
 * @property {string} [taskName] - 任务名称，可选参数
 * @property {string} [marketingPlanStart] - 营销计划开始，可选参数
 * @property {string} [marketingPlanEnd] - 营销计划结束，可选参数
 * @property {string} [createBy] - 创建人，可选参数
 */
export interface SopMessageTaskQueryParams {
  taskName?: string;
  marketingPlanStart?: string;
  marketingPlanEnd?: string;
  createBy?: string;
}

/**
 * SOP群发任务列表项接口
 * @interface SopMessageTaskItem
 * @property {string} sopId - SOP任务ID
 * @property {string} sopTaskName - 任务名称
 * @property {string} marketingPlanStart - 营销计划开始
 * @property {string} marketingPlanEnd - 营销计划结束
 * @property {string} createBy - 创建人
 * @property {string} createTime - 创建时间
 * @property {string} isDelete - 是否删除（1: 已删除, 0: 未删除）
 */
export interface SopMessageTaskItem {
  sopId: string;
  sopTaskName: string;
  marketingPlanStart: string;
  marketingPlanEnd: string;
  createBy: string;
  createTime: string;
  isDelete: string;
}

/**
 * 查询SOP群发列表
 * @function getSopMessageTaskList
 * @param {SopMessageTaskQueryParams} params - 查询参数
 * @returns {Promise<ApiResponse<SopMessageTaskItem[]>>} 返回SOP群发任务列表
 * @example
 * // 查询所有任务
 * getSopMessageTaskList({})
 *
 * // 按条件查询
 * getSopMessageTaskList({
 *   taskName: '测试任务',
 *   marketingPlanStart: '营销计划A',
 *   marketingPlanEnd: '营销计划B',
 *   createBy: '张三'
 * })
 */
export const getSopMessageTaskList = (params: SopMessageTaskQueryParams) => {
  return request.get<SopMessageTaskItem[]>('/msg/selectSopMessageTask', { params });
};

/**
 * 新增SOP群发任务参数接口
 * @interface AddSopMessageTaskParams
 * @property {string} taskName - 任务名称，必填
 * @property {string} marketingPlanStart - 营销计划开始，必填
 * @property {string} marketingPlanEnd - 营销计划结束，必填
 * @property {string} createBy - 创建人，必填
 */
export interface AddSopMessageTaskParams {
  taskName: string;
  marketingPlanStart: string;
  marketingPlanEnd: string;
  createBy: string;
}

/**
 * 新增SOP群发任务
 * @function addSopMessageTask
 * @param {AddSopMessageTaskParams} data - 新增任务参数
 * @returns {Promise<ApiResponse<null>>} 返回操作结果
 * @example
 * addSopMessageTask({
 *   taskName: '新任务',
 *   marketingPlanStart: '营销计划A',
 *   marketingPlanEnd: '营销计划B',
 *   createBy: '李四'
 * })
 */
export const addSopMessageTask = (data: AddSopMessageTaskParams) => {
  return request.post('/msg/addSopMessageTask', data);
};

/**
 * 更新SOP群发任务参数接口
 * @interface UpdateSopMessageTaskParams
 * @extends {AddSopMessageTaskParams}
 * @property {string} sopId - SOP任务ID，必填
 */

export interface UpdateSopMessageTaskParams extends AddSopMessageTaskParams {
  sopId: string;
}

/**
 * 更新SOP群发任务
 * @function updateSopMessageTask
 * @param {UpdateSopMessageTaskParams} data - 更新任务参数
 * @returns {Promise<ApiResponse<null>>} 返回操作结果
 * @example
 * updateSopMessageTask({
 *   sopId: '1',
 *   taskName: '更新后的任务',
 *   marketingPlanStart: '营销计划A',
 *   marketingPlanEnd: '营销计划B',
 *   createBy: '王五'
 * })
 */
export const updateSopMessageTask = (data: UpdateSopMessageTaskParams) => {
  return request.post('/msg/updateSopMessageTask', data);
};

/**
 * 删除SOP群发任务参数接口
 * @interface DeleteSopMessageTaskParams
 * @property {string} sopId - SOP任务ID，必填
 */
export interface DeleteSopMessageTaskParams {
  sopId: string;
}

/**
 * 删除SOP群发任务
 * @function deleteSopMessageTask
 * @param {DeleteSopMessageTaskParams} data - 删除任务参数
 * @returns {Promise<ApiResponse<null>>} 返回操作结果
 * @example
 * deleteSopMessageTask({
 *   sopId: '1'
 * })
 */
export const deleteSopMessageTask = (data: DeleteSopMessageTaskParams) => {
  return request.post('/msg/deleteSopMessageTask', data);
};

/**
 * 通用API响应接口
 * @interface ApiResponse
 * @template T
 * @property {number} code - 响应状态码（200: 成功）
 * @property {string} msg - 响应消息
 * @property {T} data - 响应数据
 */
export interface ApiResponse<T> {
  code: number;
  msg: string;
  data: T;
}

/**
 * 获取SOP群发任务进度参数接口
 * @interface GetSopPrecisionProgressParams
 * @property {string} wxId - 微信ID，必填
 * @property {string} sopId - SOP任务ID，必填
 */
export interface GetSopPrecisionProgressParams {
  wxId: string;
  sopId: string;
}

/**
 * 获取SOP群发任务进度
 * @function getSopPrecisionProgress
 * @param {GetSopPrecisionProgressParams} params - 查询参数
 * @returns {Promise<ApiResponse<any>>} 返回进度信息
 * @example
 * getSopPrecisionProgress({ wxId: 'xxx', sopId: 'yyy' })
 */
export const getSopPrecisionProgress = (params: GetSopPrecisionProgressParams) => {
  return request.get('/msg/selectPrecisionprogress', { params });
};
